\documentclass[paper=a4, fontsize=11pt]{scrartcl}

\usepackage[english]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[usenames,dvipsnames]{xcolor}
\usepackage{datetime}
\usepackage{fourier}
\usepackage{amsmath} % Formulas
\usepackage{enumerate} % Lists
\usepackage{graphicx} % Pictures
\usepackage{listings} % Allows code inclusions
\usepackage{titlesec} % Allows to offset section numbers

\definecolor{CustomColor}{rgb}{0.2,0.4,0.5}
\titlelabel{\llap{\thetitle\enskip}} % Offset section numbers
\renewcommand{\thesubsection}{\alph{subsection})} % Subsection letters instead of numbers
\renewcommand{\ttdefault}{pcr} % Courier tt font has bold for code
\renewcommand{\dateseparator}{-}

\newcommand{\code}[2]{ % Include code using \code{Python}{filename.py}
    \lstset{
        language=#1,
        morekeywords={lambda, with, as, lambda},
        basicstyle=\small\ttfamily,
        stringstyle=\color{CustomColor},
        showstringspaces=false,
        commentstyle=\color{CustomColor}\textit,
        tabsize=4,
        numbers=left,
        numbersep=1em,
        numberstyle=\color{CustomColor},
    }
    \lstinputlisting{#2}
}
%------------------------------------------------------------------------------

\title{Information Retrieval Lab 4}
\author{Carlos García Márquez}
\date{\small\yyyymmdddate\today}

\begin{document}

%----------------------------------------------------------------------------------------

\maketitle

\section{Zipf's Law}
    L'enunciat diu que no depenguem molt dels primers termes perquè tenen soroll. Primer he mirat els resultats d'aproximar la funció $c \times (rank+b)^{\alpha}$ sense tenir en compte els primers 100 elements. El resultat es la línea blava de la gràfica, els punts ignorats són els que es troben dins la zona pintada de gris:
    \begin{figure}[ht!]
        \centering
        \includegraphics[width=150mm]{zipf-100.png}
    \end{figure} \\
    Per fer l'aproximació he usat l'utilitat curve\_fit de scipy i he obtingut els següents paràmetres:
    $$\alpha = 1.11,\quad b = 43.5,\quad c = 0.30 \qquad 0.30 \times (rank+43.5)^{1.11}$$
    Es pot veure que a partir del 100è element la línia s'ajusta prou bé tret dels últims elements. Tot i que segons el que s'ha explicat a teoria el paràmetre $\alpha$ acostuma a estar entre 1.5 i 2 ha sortit $\alpha = 1,11$. Si provem a treure les 1000 primeres paraules (tot i que potser no és molt bona idea perquè eliminem el 4\% de les paraules) obtenim el següent resultat:
    \begin{figure}[ht!]
        \centering
        \includegraphics[width=150mm]{zipf-1000.png}
    \end{figure} \\
    Amb els paràmetres:
    $$\alpha = 1.81, \quad b = 1340,\quad c = 181 \qquad 181 \times (rank+1340)^{1.81}$$
    Ens pot indicar que treient \textit{stopwords}, agafant una mostra més gran per reduïr el soroll o buscant una forma diferent d'ajustar els paràmetres es pot aconseguir un millor resultat al final de la cua.


\newpage

\section{Heaps' Law}
    En aquest cas he agafat 40 mesures de texts de longituds diferents i he comptat quantes paraules diferents hi havia.
    \begin{figure}[ht!]
        \centering
        \includegraphics[width=150mm]{heaps.png}
    \end{figure} \\
    La corva està ajustada de la mateixa manera que a l'apartat anterior i s'obtenen els paràmetres següents:
    $$k = 29.59 \quad \beta = 0.51$$
    $$29.59 \times N^{0.51}$$
    S'ajusta molt bé i els paràmetres són molt similars als que es van comentar a classe.


\newpage

\section{Apèndix: Codi font}
        \code{Python}{stats.py}

\end{document}
